package application;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.hibernate.Session;

/**
 *
 * @author Étienne
 */
public class ConstantPool {
    private static ConstantPool instance = new ConstantPool();
    private HashMap<Integer,String> domaines;
    private HashMap<Integer,String> statuts;
    
    private ConstantPool () {
        this.chargerDonnees();
    }
    public static ConstantPool getInstance() {
        return ConstantPool.instance;
    }
    
    /**
     * Procédure qui charge les données du Constant Pool.
     * 
     */
    private void chargerDonnees() {
        // On crée une liste temporaire pour stocker les résultats des requêtes
        List temp = new ArrayList();
        // On va chercher la session
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        
        // On charge les données et on les stocke dans leur liste respective
        temp = session.createSQLQuery("SELECT ID_DOMAINE, NOM"
                + " FROM DOMAINES_ETUDE").list();
        domaines = transfererListAMap(temp);
        
        temp = session.createSQLQuery("SELECT ID_TYPE_COMPTE, NOM"
                + " FROM TYPE_COMPTE").list();
        statuts = transfererListAMap(temp);
          
    }

    /**
     * Fonction qui va transférer une ArrayList en HashMap.
     * @param liste
     * @return 
     */
    private HashMap<Integer,String> transfererListAMap(List<Object[]> liste)
    {
        HashMap<Integer,String> map = new HashMap<Integer,String>();
        for(Object[] list:liste)  
        {
            map.put((Integer)list[0], (String) list[1]);
        }
        return map;
    }
    
    public HashMap<Integer, String> getDomaines()
    {
        return domaines;
    }
    
    public HashMap<Integer, String> getStatuts()
    {
        return statuts;
    }
}
